package com.lkd.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lkd.entity.TaskEntity;
import com.lkd.http.vo.CancelTaskViewModel;
import com.lkd.http.vo.TaskViewModel;
import com.lkd.vo.Pager;
import com.lkd.vo.VmVO;

/**
 * 工单业务逻辑
 */
public interface TaskService extends IService<TaskEntity> {

    /**
     * 通过条件搜索工单列表
     * @param pageIndex
     * @param pageSize
     * @param innerCode
     * @param userId
     * @param taskCode
     * @param isRepair 是否是运维工单
     * @return
     */
    Pager<TaskEntity> search(Long pageIndex, Long pageSize, String innerCode, Integer userId, String taskCode, Integer status, Boolean isRepair, String start, String end);

    /**
     * 创建工单，运营运维共用
      * @param model
     */
    boolean createTask(TaskViewModel model);

    /**
     * 取消工单
     *
     * @param taskId
     * @param cancelVm
     * @return
     */
    boolean cancelTask(String taskId, CancelTaskViewModel cancelVm,Integer userId);

    /**
     * 接受工单
     *
     * @param taskId
     * @param userId
     * @return
     */
    boolean acceptTask(String taskId, Integer userId);

    /**
     * 完成工单
     *
     * @param taskId
     * @param userId
     * @return
     */
    boolean completeTask(String taskId, Integer userId);

    /**
     * 从redis中找出当日工单最少的运维人员
     * @param vmInfo
     * @return
     */
    Integer getRepairId(VmVO vmInfo);
    /**
     * 从redis中找出当日工单最少的运营人员
     * @param vmInfo
     * @return
     */
    Integer getSupplyId(VmVO vmInfo);
}
